/*
 * Copyright 2004-2005 asoft
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）* 复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.asoft.cn/licenses
 */

package com.asoft.common.basedata.service;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.asoft.common.base.web.service.AbstractTreeService;
import com.asoft.common.basedata.define.TypeParams;
import com.asoft.common.basedata.manager.TypeManager;
import com.asoft.common.basedata.model.Type;
import com.asoft.common.basedata.view.foreveryone.RootNodeOfTypeTree4EveryOne;
import com.asoft.common.basedata.view.foreveryone.TypeNodeOfTypeTree4EveryOne;

/**
 * <p>Title: 操作日志 - 查询类别,将结果通过树图表现</p>
 * <p>Description:
 *      如果有多种节点类型(根节点除外),必须传
 *      递多个根节点实体
 * </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: asoft</p>
 * @ $Author: author $
 * @ $Date: 2005/02/15 09:14:59 $
 * @ $Revision: 1.7 $
 * @ created in 2005-11-14
 *
 */


public class FindTypes4TreeViewService extends AbstractTreeService
{

        /** 节点类型－根结点 */
        public static String ROOTNODE = "0";

        /** 节点类型－ 类别：非根节点 */
        public static String TYPE = "1";

        static Logger logger = Logger.getLogger(FindTypes4TreeViewService.class);

        private TypeManager typeManager;

        public void setTypeManager(TypeManager typeManager)
        {
                this.typeManager = typeManager;
        }

        /** 获取树节点对应的models */
        public void createModels(Map modelsMap,
                                 HttpServletRequest request)
        {
                logger.debug("1. 获取查询条件.....");
                // 获取查询条件
                // 查询节点类型1
                String typeId = this.getValueFromRequestParameter(request,"rootId");
                Type rootType = (Type)this.typeManager.get(typeId);
                if(rootType == null)
                {
                        rootType = this.typeManager.getByCode(TypeParams.ROOT);
                }
                modelsMap.put(ROOTNODE,rootType);
                modelsMap.put(TYPE,rootType.getAllSubTypes());// 父节点下面TYPE类型的所有节点models
        }

        /** 设置nodeModel's views */
        public void setNodeViews(Map viewsMap,
                                 HttpServletRequest request)
        {
                // 从 request里面获取角色参数
                // for everyone
                viewsMap.put(ROOTNODE,new RootNodeOfTypeTree4EveryOne()); // 设置根节点
                viewsMap.put(TYPE,new TypeNodeOfTypeTree4EveryOne()); // 设置非根类别节点
        }
}
